\chapter{总结与展望} 
% \pagenumbering{arabic} % 阿拉伯数字页码

\section{致谢}
感谢姜老师的耐心指导和方向上的提醒，我的问题是理论知识不扎实就动手干，
这样的后果常常是陷入迷茫，没有方向，常常纠结下一步要写什么代码，这是理论知识欠缺的表现．

最初打算写本项目是因为组队参加"龙芯杯"遭遇的彻底失败，这次失败使我意识到自己与他人的巨大差距，发现自己
学的课程没有联系起来，从而形成解决实际问题的综合能力，觉得需要做一个接近底层的综合性项目．感谢赵老师的
悉心指点与支持鼓励．

还要感谢朋友以及同学们项目中带给的大力支持和帮忙，给我带来极大的启发。
也要感谢参考文献中的作者们，通过他们的文章或著作，使我对项目有了很好的出发点。

\section{总结}

个人觉得本次课程设计难度比较大，对我是一次综合性考验．课设所用知识包括
操作系统原理、微机原理、汇编语言、数据结构、Linux命令等，还要涉及GAS汇编、Makefile编写、GRUB格式、
ATA硬盘串口驱动等零碎知识，这些做项目之前也都不懂,需要查阅很多资料.当程序出现奇怪的bug调不出来时，
一个人常常感到莫大的孤独．

文件管理虽然是相对独立的一章，但若要想在物理的机器上做出来，必须先写设备驱动，要键盘输入有反应，屏幕能够响应，
还得写中断处理程序和字符设备驱动，在此之前要先正确设置好gdt表和idt表，内存管理也需要能够malloc和free,
本系统还完成了简单的连续内存分配和对8259A,8253或其兼容芯片的编程．
所有这些必须正确做完才能进入文件系统的编写．怎样才能符合grub规范，
如何才能读写物理IDE硬盘扇区,如何写串口驱动.这些在我做此次课设之前，我也不清楚．
我阅读了文献和源代码之后，才有初步的认识，自己在编写代码和调试bug的过程中，
才逐步深入了解．当我遇到困难做不下去时，就多找几个这方面的材料对比着看．

当有人问Linus如何深入理解minix内核时，他提出＂RTFSC＂:去读源码吧．这里RTFSC体现了阅读源码的艰辛和重要性．
．
在操作系统的学习中，我一直结合赵炯 那本书阅读Linux0.11源码，虽然艰难，但有时也会感到很有趣，
有时会发现比较实现起来很复杂的一件事，Linux代码几笔带过，实现得简洁有力，这是多么精妙!
Linux0.11是适合初学者的源码，同样的还有用于教育目的的经典的xv6内核,
国内有在jos和xv6基础上改的ucore实验，也可以看看．
我在课程设计进行中部分阅读了其他不知名的小kernel．真正仔细研究的是Linux0.11,xv6和ucore这三套源码，
阅读源码不会一帆风顺，当我遇到困难时，就把三个对比着看，看他们面对同样问题是如何处理的，从中收获很多．
Github和osdev网站也给我帮助．

网上关于简易内核编写的资料并不是很少，但关于文件系统的实现上，大多是实现已有文件系统
，最常见的是基于fat32,这其实是比较简单的，还有的是完全实现ext2甚至ext4文件系统，这个难度相当大，
我认为这不是普通学生能够在短时间做出来的．
实现一个自定义的文件系统难度应该在二者之间，也还是可以做到的，但在实践中越往后写下去越难找到可参考的资料,
水平有限，我也花费了很多时间．

在这一点上Linux0.11实现的是minix文件系统，xv6和ucore实现的是sfs文件系统，
由于minix文件系统和sfs都是已知的文件系统，这几个在交叉开发时可以采用mkfs命令做出一个磁盘镜像
，然后可以考虑和内核镜像做成系统集成盘．但这情况不适用于我们的RiOS,因为我的文件系统是自定义的，
除非自己写个类似mkfs的程序，否则想用mkfs命令做出相应磁盘镜像是不可能的．
最后，我采用系统探测磁盘并格式化的方法解决了这一问题．
至于空闲块成组链接，我也是反复研究课本，弄懂理论后摸索着写代码．

\subsection{存在问题}

"得失寸心知",为此项目颇费了一番精力,其中我也走过很多弯路,快乐与痛苦、优点与不足自己是最清楚的.
这里谈谈缺陷．本项目基本完整地实现了操作系统中文件系统部分,但是严格地说它并不能算得上一个整体结构完整的
简单内核．因为个人水平和时间精力有限，并没有实现进程管理，这是遗憾．内存管理使用了较为原始的方法，虽然
能够支持系统的运行，但不利于多进程的管理．

\subsection{展望}

不知道是否有同学对继续编写此项目有兴趣，如果真的有，那我将很高兴.
目前内核要做的工作很明显,一是把内存管理由最初的原始方法替换为段页式内存管理,
有了多进程在内存管理方面的基础，可以考虑实现真正的进程调度．后者如何实现，前面已经有相关论述，
应该说后者的基础工作(除了段页式内存管理),现在还是有的．若完成了这些，整个项目应该能够大体覆盖书上的
一些知识点了．还在网上看过\href{https://legacy.gitbook.com/book/nju-ics/ics2017-programming-assignment/details}{ics-pa实验}，比较有趣
，我也挺想移植一个小游戏到我们的内核上去，不过限于水平和时间精力，没有付诸行动．
未来合适的时候,我可能还会在\href{https://github.com/Twopothead/baby-rios}{github}继续发展此项目，如果有想法，欢迎与我交流．






% \clearpage